This invention relates generally to file systems for microcomputer-based devices having limited system resources and in particular to data files used to specify and create interfaces for microcomputer-based devices acting as specialized web servers, and is more particularly directed toward a method and system that places a minimum set of software routines for accessing the microcomputer-based system""s data store within the embedded controller itself, while placing all higher level software components of a file system within a host computer.
In general, the term xe2x80x9cembedded systemxe2x80x9d connotes a combination of computer hardware and software that forms a component of some larger system. Embedded systems are intended to operate without intervention by the larger system of which they form a part, and without the need for frequent control or supervisory inputs from any source. Embedded systems are usually of simple design, and often do not include mass storage components or complex peripherals.
Embedded systems have been placed in vending machines to provide a simple computer network interface to report the need for service or vended product replenishment. Some copying machines in the office environment also utilize embedded systems for reporting of operational status, and embedded systems have been suggested in television set-top boxes designed to provide Internet web browser features through the viewer""s television set.
Embedded systems that are accessible over computer networks may be configured, for example, as specialized web servers designed for Internet access. In general, this web server function is restricted to embedded device interface. But the device must usually be able to supply data files used to specify and create interfaces.
In order to minimize space required for storing data files within the limited non-volatile memory of an embedded system, which would generally be limited to a few thousand bytes (8-bit memory locations) of EEPROM (electrically erasable, programmable read-only memory), a few fixed-length data files with a fixed address table could be provided. This type of data structure still requires storage space for the address table and a minimal file access utility (a READ routine, for example) to access the stored data.
While this stripped-down data structure may be adequate for some application, it lacks the flexibility to operate in an environment where data files may need to be altered, removed, or added. Accordingly, a need arises for a flexible file system designed to operate in conjunction with a microcomputer-based system having limited storage capability. Such a file system should provide a range of file system services while preserving as much as possible of the embedded system""s storage capability for the data files themselves.
These needs and others are satisfied by the method of the present invention for a file system for a collection of data files on a microcontroller-based device, the microcontroller-based device including an arithmetic/logic unit, read/write memory, and program memory, and the file system comprising a data table stored in the program memory and a document table of contents stored on a host computer. The data table is a set of data files, and the document table of contents includes length and offset information for each data file.
In one aspect of the invention, the set of data files may be a concatenated set of compressed data files. The file system may further comprise means for accessing the document table of contents on the host computer to retrieve the length and offset information and means for retrieving the desired data file using the retrieved length and offset information.
In one form of the invention, at least one of the collection of data files may be a rich text document, such as an HTML document, although this is not a requirement for a system in accordance with the invention.
In accordance with another aspect of the invention, a method is described for creating and managing a file system for a collection of data files on a microcontroller-based device, wherein the microcontroller-based device includes an arithmetic/logic unit, read/write memory, and program memory. The method comprises the steps of providing a data table for storage in the program memory and providing a document table of contents for storage on a host computer.
The step of providing a data table further comprises the steps of compressing each file in a set of desired files and concatenating the compressed files to form the data table. The document table of contents includes file length and file offset information.
In accordance with one form of the invention, a desired file is accessed by the steps of retrieving length and offset information relating to the desired data file from the document table of contents on the host computer and accessing the desired data file in the program memory using the retrieved length and offset information.
In another form of the invention, a file system is provided having software components distributed over a computer network, wherein one element of the computer network is a microcontroller-based device including an arithmetic/logic unit, read/write memory, program memory, and non-volatile memory, and another element of the computer network is a host computer system. The file system comprises a collection of data files stored in the non-volatile memory of the microcontroller-based device, byte-oriented non-volatile memory access routines stored in the program memory of the microcontroller-based device, and file-oriented access routines stored on the host computer, wherein the file-oriented access routines provide directory and file manipulation capability for the data files stored in the non-volatile memory of the microcontroller-based device.
The data files in the non-volatile memory of the microcontroller-based device are configured as an array of writable blocks. The memory access routines described in conjunction with the file system may comprise a read routine that reads a range of memory locations from the non-volatile memory and a write routine that writes to a single memory location.
A start address and a number of memory locations to be read may be passed to the read routine as parameters, while a memory address and a value to be written may be passed to the write routine as parameters.
In yet another form of the invention, a method is described for creating and managing a file system having software components distributed over a computer network, wherein one element of the computer network is a microcontroller-based device including an arithmetic/logic unit, read/write memory, program memory, and non-volatile memory, and another element of the computer network is a host computer system. The method comprises the steps of providing a collection of data files stored in the non-volatile memory of the microcontroller-based device, providing byte-oriented non-volatile memory access routines stored in the program memory of the microcontroller-based device, and providing file-oriented access routines stored on the host computer. The collection of data files stored in the non-volatile memory of the microcontroller-based device may be a collection of compressed data files.
In yet another aspect of the present invention, a method is provided for maintaining a file system for one or more files stored in non-volatile memory of a microcontroller-based device, wherein the microcontroller-based device is in communication with a host computer over a computer network. The method comprises the steps of providing byte-oriented non-volatile memory access routines stored in the program memory of the microcontroller-based device, providing, on the host computer, file-oriented access routines, and maintaining, on the host computer, a directory and a free block list characterizing the files stored on the microcontroller-based device and the file storage space available.
Updating a file stored on the microcontroller-based device further includes the steps of maintaining, on the host computer, a copy of the file to be updated, compressing the copy of the file, determining file length, examining the free block list to determine whether number of block required for file storage has changed, and, if so, modifying the free block list to reflect new block allocation, storing the file in blocks as allocated in the free block list, updating a directory entry corresponding to the file being updated, and writing the file to the microcontroller-based device utilizing the byte-oriented access routines in the program memory of the microcontroller-based device. This process may further include the step of updating a transaction counter stored both on the microcontroller-based device and on the host computer.
In still another form of the invention, a file system comprises a data table stored in memory associated with a device and a software module on a host computer system interconnected with the device, wherein the software module interprets the data table. The table may be grouped into logical blocks of data, while the logical blocks may comprise an arrangement including a directory structure, a free block list, and sequences of blocks that store contents of a file.